<!DOCTYPE html>
<html lang="en-us">
  <head>
    
    <script type="application/ld+json">

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Double_week_contest",
  
  "datePublished": "2022-02-20T13:17:54+08:00",
  "dateModified": "2022-02-20T13:17:54+08:00",
  "author": {
    "@type": "Person",
    "name": "Zhang Gaojie",
    
    "image": "https://zgjoget.gitee.io/img/avatar.jpg"
    
  },
  "mainEntityOfPage": { 
    "@type": "WebPage",
    "@id": "https:\/\/zgjoget.gitee.io\/2022\/02\/double_week_contest\/" 
  },
  "publisher": {
    "@type": "Organization",
    "name": "Zhang Gaojie",
    
    "logo": {
      "@type": "ImageObject",
      "url": "https://zgjoget.gitee.io/img/avatar.jpg"
    }
    
  },
  "description": "本周双周赛\n",
  "keywords": []
}

</script>
    <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="generator" content="Hugo 0.92.2 with theme Tranquilpeak 0.5.3-BETA">
<meta name="author" content="Zhang Gaojie">
<meta name="keywords" content="">
<meta name="description" content="本周双周赛">


<meta property="og:description" content="本周双周赛">
<meta property="og:type" content="article">
<meta property="og:title" content="Double_week_contest">
<meta name="twitter:title" content="Double_week_contest">
<meta property="og:url" content="https://zgjoget.gitee.io/2022/02/double_week_contest/">
<meta property="twitter:url" content="https://zgjoget.gitee.io/2022/02/double_week_contest/">
<meta property="og:site_name" content="Zhang Gaojie">
<meta property="og:description" content="本周双周赛">
<meta name="twitter:description" content="本周双周赛">
<meta property="og:locale" content="en-us">

  
    <meta property="article:published_time" content="2022-02-20T13:17:54">
  
  
    <meta property="article:modified_time" content="2022-02-20T13:17:54">
  
  
  
  


<meta name="twitter:card" content="summary">







  <meta property="og:image" content="https://zgjoget.gitee.io/img/avatar.jpg">
  <meta property="twitter:image" content="https://zgjoget.gitee.io/img/avatar.jpg">






    <title>Double_week_contest</title>

    <link rel="icon" href="https://zgjoget.gitee.io/favicon.png">
    

    

    <link rel="canonical" href="https://zgjoget.gitee.io/2022/02/double_week_contest/">

    
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css" integrity="sha512-H9jrZiiopUdsLpg94A333EfumgUBpO9MdbxStdeITo+KEIMaNfHNvwyjjDJb+ERPaRS6DpyRlKbvPUasNItRyw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    
    
    
    <link rel="stylesheet" href="https://zgjoget.gitee.io/css/style-h6ccsoet3mzkbb0wngshlfbaweimexgqcxj0h5hu4h82olsdzz6wmqdkajm.min.css" />
    
    

    
      
    
    
  </head>

  <body>
    <div id="blog">
      <header id="header" data-behavior="4">
  <i id="btn-open-sidebar" class="fa fa-lg fa-bars"></i>
  <div class="header-title">
    <a class="header-title-link" href="https://zgjoget.gitee.io/" aria-label="Go to homepage">Zhang Gaojie</a>
  </div>
  
    
      <a class="header-right-picture "
         href="https://zgjoget.gitee.io/#about" aria-label="Open the link: /#about">
    
    
    
      
        <img class="header-picture" src="https://zgjoget.gitee.io/img/avatar.jpg" alt="Author&#39;s picture" />
      
    
    </a>
  
</header>

      <nav id="sidebar" data-behavior="4">
  <div class="sidebar-container">
    
      <div class="sidebar-profile">
        <a href="https://zgjoget.gitee.io/#about" aria-label="Read more about the author">
          <img class="sidebar-profile-picture" src="https://zgjoget.gitee.io/img/avatar.jpg" alt="Author&#39;s picture" />
        </a>
        <h4 class="sidebar-profile-name">Zhang Gaojie</h4>
        
          <h5 class="sidebar-profile-bio">A Computer-science and Cyber-security novice</h5>
        
      </div>
    
    <ul class="sidebar-buttons">
      
  <li class="sidebar-button">
    
      <a class="sidebar-button-link " href="https://zgjoget.gitee.io/" title="Home">
    
      <i class="sidebar-button-icon fas fa-lg fa-home" aria-hidden="true"></i>
      
      <span class="sidebar-button-desc">Home</span>
    </a>
  </li>

  <li class="sidebar-button">
    
      <a class="sidebar-button-link " href="https://zgjoget.gitee.io/categories" title="Categories">
    
      <i class="sidebar-button-icon fas fa-lg fa-bookmark" aria-hidden="true"></i>
      
      <span class="sidebar-button-desc">Categories</span>
    </a>
  </li>

  <li class="sidebar-button">
    
      <a class="sidebar-button-link " href="https://zgjoget.gitee.io/tags" title="Tags">
    
      <i class="sidebar-button-icon fas fa-lg fa-tags" aria-hidden="true"></i>
      
      <span class="sidebar-button-desc">Tags</span>
    </a>
  </li>

  <li class="sidebar-button">
    
      <a class="sidebar-button-link " href="https://zgjoget.gitee.io/archives" title="Archives">
    
      <i class="sidebar-button-icon fas fa-lg fa-archive" aria-hidden="true"></i>
      
      <span class="sidebar-button-desc">Archives</span>
    </a>
  </li>

  <li class="sidebar-button">
    
      <a class="sidebar-button-link " href="https://zgjoget.gitee.io/#about" title="About">
    
      <i class="sidebar-button-icon fas fa-lg fa-question" aria-hidden="true"></i>
      
      <span class="sidebar-button-desc">About</span>
    </a>
  </li>


    </ul>
    <ul class="sidebar-buttons">
      
  <li class="sidebar-button">
    
      <a class="sidebar-button-link " href="https://github.com/zgjoget9" target="_blank" rel="noopener" title="GitHub">
    
      <i class="sidebar-button-icon fab fa-lg fa-github" aria-hidden="true"></i>
      
      <span class="sidebar-button-desc">GitHub</span>
    </a>
  </li>

  <li class="sidebar-button">
    
      <a class="sidebar-button-link " href="https://stackoverflow.com/users/18013715/jack-zhang" target="_blank" rel="noopener" title="Stack Overflow">
    
      <i class="sidebar-button-icon fab fa-lg fa-stack-overflow" aria-hidden="true"></i>
      
      <span class="sidebar-button-desc">Stack Overflow</span>
    </a>
  </li>


    </ul>
    <ul class="sidebar-buttons">
      

    </ul>
  </div>
</nav>

      

      <div id="main" data-behavior="4"
        class="
               hasCoverMetaIn
               ">
        <article class="post" id="top">
          
          
            <div class="post-header main-content-wrap text-left">
  
    <h1 class="post-title">
      Double_week_contest
    </h1>
  
  
  <div class="postShorten-meta post-meta">
    
      <time datetime="2022-02-20T13:17:54&#43;08:00">
        
  February 20, 2022

      </time>
    
    
  </div>

</div>
          
          <div class="post-content markdown">
            <div class="main-content-wrap">
              <p>本周双周赛</p>
<h2 id="周赛">周赛</h2>
<p>2022/02/20 10:30-12:00</p>
<p><strong>504 502 Gateway error/timeout</strong></p>
<h3 id="6012-统计各位数字之和为偶数的整数个数httpsleetcode-cncomcontestweekly-contest-281problemscount-integers-with-even-digit-sum">6012. <a href="https://leetcode-cn.com/contest/weekly-contest-281/problems/count-integers-with-even-digit-sum/">统计各位数字之和为偶数的整数个数</a></h3>
<p>这题比较简单，我是直接暴力</p>
<pre tabindex="0"><code>class Solution {
public:
    int countEven(int num) {
        int i=1,res=0;
        while(i&lt;=num){
            int tmp=0;
            int j=i;
            while(j!=0){
                tmp+=j%10;
                j/=10;   
            }
            if(tmp%2==0)res++;
            i++;
        }
        return res;
    }
};
</code></pre><h3 id="6013-合并零之间的节点httpsleetcode-cncomcontestweekly-contest-281problemsmerge-nodes-in-between-zeros">6013. <a href="https://leetcode-cn.com/contest/weekly-contest-281/problems/merge-nodes-in-between-zeros/">合并零之间的节点</a></h3>
<p>这题就是直接遍历一遍链表，我第一次是把值先存在容器中之后再创建节点，结果是超时了，所以就直接每算出来一个节点的值就直接创建节点。</p>
<pre tabindex="0"><code>/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeNodes(ListNode* head) {
        ListNode *newhead=new ListNode();
        ListNode *q=newhead;
        int tmp=0;
        ListNode *p=head;
        int tag=0;
        while(p!=NULL){
            if(p-&gt;val==0&amp;&amp;tag==0){          
                tag=1;
                p=p-&gt;next;
                if(p==NULL)break;
                while(p-&gt;val!=0){
                    tmp+=p-&gt;val;
                    p=p-&gt;next;
                }
                ListNode *s=new ListNode(tmp);
                q-&gt;next=s;
                q=q-&gt;next;
                tag=0;
                tmp=0;
            }
        }
        newhead=newhead-&gt;next;
        return newhead;
    }
};
</code></pre><h3 id="6014-构造限制重复的字符串httpsleetcode-cncomcontestweekly-contest-281problemsconstruct-string-with-repeat-limit">6014. <a href="https://leetcode-cn.com/contest/weekly-contest-281/problems/construct-string-with-repeat-limit/">构造限制重复的字符串</a></h3>
<p>这题我在想使用贪心算法解决，但是当时没有时间了。所以后面又花了点时间把代码写了</p>
<pre tabindex="0"><code>class Solution {
public:
    string repeatLimitedString(string s, int repeatLimit) {
        sort(s.begin(),s.end(),greater&lt;char&gt;());
        int left=0,right=0;
        while(left&lt;s.size()&amp;&amp;right&lt;s.size()){
            
            while(s[left]==s[right])right++;
            
            while(right-left&gt;repeatLimit&amp;&amp;right&lt;s.size()){
                int tmp=left+repeatLimit;
                swap(s[tmp],s[right]);
                left=tmp+1;
                right++;
            }
            
            if(right-left&gt;repeatLimit&amp;&amp;right&gt;=s.size()){
                return s.substr(0,left+repeatLimit);
            }
            
            
            left=right;
            
        }
        return s;
    }
};
</code></pre><h3 id="6015-统计可以被-k-整除的下标对数目httpsleetcode-cncomcontestweekly-contest-281problemscount-array-pairs-divisible-by-k">6015. <a href="https://leetcode-cn.com/contest/weekly-contest-281/problems/count-array-pairs-divisible-by-k/">统计可以被 K 整除的下标对数目</a></h3>
<p>这题首先我直接按照题目意思提交，提示乘积有溢出</p>
<pre tabindex="0"><code>class Solution {
public:
    long long coutPairs(vector&lt;int&gt;&amp; nums, int k) {
        int res=0;
        for(int i=0;i&lt;nums.size()-1;i++){
            for(int j=i+1;j&lt;nums.size();j++){
               if(nums[i]*nums[j]%k==0)res++; 
            }
        }
        return res;
    }
};
</code></pre><p>后面想到了在信数中学过的大数快速模幂，使用欧拉定理(a<em>b) mod p = (a mod p)</em>(b mod p)mod p,这样子最后还是卡在第92个样例超时。</p>
<pre tabindex="0"><code>class Solution {
public:
    long long coutPairs(vector&lt;int&gt;&amp; nums, int k) {
        int res=0;
        for(int i=0;i&lt;nums.size()-1;i++){
            for(int j=i+1;j&lt;nums.size();j++){
                long long tmp1=nums[i]%k,tmp2=nums[j]%k;             
                if(tmp1*tmp2%k==0)res++;
            }
        }
        return res;
    }
};
</code></pre><p>另外我还考虑到使用tmp1=gcd(a,k),tmp2=gcd(b,k),只要tmp1和tmp2的乘积能够被k整除就代表a*b能被整除，还是卡在第92个样例超时。
所以我在想算法是没有问题的，应该是遍历的方式不对。于是要考虑遍历的下标i和j的选择。后面就想到了数论里的筛法</p>
<h4 id="解法数学--计数">解法：数学 &amp; 计数</h4>
<p>作者：tsreaper</p>
<p>链接：<!-- raw HTML omitted --><a href="https://leetcode-cn.com/problems/count-array-pairs-divisible-by-k/solution/shu-xue-ji-shu-by-tsreaper-7ok1/">https://leetcode-cn.com/problems/count-array-pairs-divisible-by-k/solution/shu-xue-ji-shu-by-tsreaper-7ok1/</a><!-- raw HTML omitted --></p>
<p>来源：力扣（LeetCode）</p>
<p>著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。</p>
<p>考虑两个数x和y满足xy被k整除。若x和k是已知的，那么y必须满足什么条件呢？</p>
<p>我们先将x和k进行质因数分解，把x和k的公共质因数都去掉k剩下的质因数就是y必须包含的质因数。换成数学语言也就是说，y是k/gcd(x, k) 的倍数。这里gcd(x,k) 是x和k的最大公因数。</p>
<p>因此只需要维护每个数的倍数出现了几次即可。这是一个经典的O(nlgn)的算法（复杂度分析见参考代码一节）。之后枚举nums中的每个数x，与它能形成好二元组的y的数量，即为k/gcd(x,k)倍数的数量。</p>
<p>当然，这个计数方法中没有考虑 i &lt; j 的限制。可以发现，这个计数方法中：</p>
<p>nums[i] * nums[j] 能被 k 整除的下标对，在答案中统计了两次；</p>
<p>nums[i] * nums[i] 能被 k 整除的下标，在答案中统计了一次。</p>
<pre tabindex="0"><code>class Solution {
public:
    long long coutPairs(vector&lt;int&gt;&amp; nums, int k) {
        int mx = k;
        for (int x : nums) mx = max(mx, x);

        // 统计每个数的倍数出现的次数
        vector&lt;int&gt; cnt(mx + 1);
        for (int x : nums) cnt[x]++;
        // 为什么这个算法是 O(nlnn) 的？因为这个算法的循环次数是 n(1 + 1/2 + 1/3 + ...)，由调和级数可知括号内趋向 lnn
        for (int i = 1; i &lt;= mx; i++) for (int j = i * 2; j &lt;= mx; j += i) cnt[i] += cnt[j];

        long long ans = 0;
        // 对于每个数统计与它形成好二元组的数有几个
        for (int x : nums) ans += cnt[k / __gcd(k, x)];
        // 排除自己和自己形成好二元组的情况
        for (int x : nums) if (1LL * x * x % k == 0) ans--;
        return ans / 2;
    }
};

</code></pre><h4 id="使用哈希表来做">使用哈希表来做：</h4>
<p>作者：吴自华</p>
<p>链接：<!-- raw HTML omitted --><a href="https://leetcode-cn.com/circle/discuss/76BnS1/view/QLHc5J/">https://leetcode-cn.com/circle/discuss/76BnS1/view/QLHc5J/</a><!-- raw HTML omitted --></p>
<p>来源：力扣（LeetCode）</p>
<p>著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。</p>
<p>将所有数按照与k的最大公约数分组，之后以组为单位进行配对。为了避免重复，只考虑k1&lt;k2的情况：</p>
<ul>
<li>k1&lt;k2,计入v1v2组</li>
<li>k1=k2,计入v1*(v1-1)/2组
参考代码</li>
</ul>
<pre tabindex="0"><code>class Solution {
public:
    long long coutPairs(vector&lt;int&gt;&amp; nums, int k) {
        long long ans = 0;
        int n = nums.size();
        unordered_map&lt;int, int&gt; gc;
        for (int num : nums)
            gc[__gcd(num, k)]++;
        for (auto [k1, v1] : gc)
            for (auto [k2, v2] : gc) {
                if (1LL * k1 * k2 % k == 0) {
                    if (k1 &lt; k2)
                        ans += 1LL * v1 * v2;
                    else if (k1 == k2)
                        ans += 1LL * v1 * (v1 - 1) / 2;
                }
            }
        return ans;
    }
};
</code></pre><p>复杂度：</p>
<p>时间复杂度 O(NlogK+τ(k)^2) ,其中 τ(K) 为 K 的正因子个数。</p>
<p>空间复杂度 O(τ(K))。</p>
<h2 id="双周赛">双周赛</h2>
<p>2022/02/19 22:30-0:00</p>
<p>这次双周赛异常简单，大概20分钟就做完了3题</p>
<h3 id="5996-统计数组中相等且可以被整除的数对httpsleetcode-cncomproblemscount-equal-and-divisible-pairs-in-an-array">5996. <a href="https://leetcode-cn.com/problems/count-equal-and-divisible-pairs-in-an-array/">统计数组中相等且可以被整除的数对</a></h3>
<pre tabindex="0"><code>class Solution {
public:
    int countPairs(vector&lt;int&gt;&amp; nums, int k) {
        int res=0;
        for(int i=0;i&lt;nums.size()-1;i++){
            for(int j=i+1;j&lt;nums.size();j++){
                if((nums[i]==nums[j])&amp;&amp;((i*j)%k)==0)res++;
            }
        }
        return res;
    }
};
</code></pre><h3 id="5997-找到和为给定整数的三个连续整数httpsleetcode-cncomproblemsfind-three-consecutive-integers-that-sum-to-a-given-number">5997. <a href="https://leetcode-cn.com/problems/find-three-consecutive-integers-that-sum-to-a-given-number/">找到和为给定整数的三个连续整数</a></h3>
<pre tabindex="0"><code>class Solution {
public:
    vector&lt;long long&gt; sumOfThree(long long num) {
        vector&lt;long long&gt;res;
        if(num%3==0){
            long long tmp=num/3;
            for(int i=0;i&lt;3;i++){
                res.push_back(tmp-1+i);
            }
            return res;
        }
        else return res;
    }
};
</code></pre><h3 id="5998-拆分成最多数目的偶整数之和httpsleetcode-cncomproblemsmaximum-split-of-positive-even-integers">5998. <a href="https://leetcode-cn.com/problems/maximum-split-of-positive-even-integers/">拆分成最多数目的偶整数之和</a></h3>
<pre tabindex="0"><code>class Solution {
public:
    vector&lt;long long&gt; maximumEvenSplit(long long finalSum) {
        vector&lt;long long&gt;res;
        if(finalSum%2==1)return res;
        else{
            long long i=sqrt(finalSum);
            for(;i&lt;finalSum;i++){
                if(i*(i+1)&gt;finalSum)break;
            }
            long long j=1;
            long long remain=finalSum;
            while(i-2){
                i--;
                remain=remain-j*2;
                res.push_back(j*2);
                j++;
            }
            res.push_back(remain);
            return res;
        }
    }
};
</code></pre><h3 id="5999-统计数组中好三元组数目httpsleetcode-cncomproblemscount-good-triplets-in-an-array">5999. <a href="https://leetcode-cn.com/problems/count-good-triplets-in-an-array/">统计数组中好三元组数目</a></h3>
<pre tabindex="0"><code>
</code></pre><h2 id="总结">总结</h2>
<p>这次双周赛比上次表现的好一点，可能是因为最近的周赛都是一些春招的笔试，所以相比于前面的题更简单了，虽然题目的完成度比之前有改善，但是其实LeetCode全站排名还是相对比较低的。</p>
<p>这几天做了几道贪心的题，感觉贪心的代码需要思维逻辑特别清晰。</p>
<p>下面在算法方面就要开始着重开始字符串、动态规划、树和图的题目了，目前看到这些类型的题目都还是有点头大，不知道如何动手。</p>
<p>在3月之前要把操作系统和计算机网络的知识全都复习一遍。</p>
              


            </div>
          </div>
          <div id="post-footer" class="post-footer main-content-wrap">
            
              
            
            
<div class="post-actions-wrap">
  <nav >
    <ul class="post-actions post-action-nav">
      
        <li class="post-action">
          
            <a class="post-action-btn btn btn--default tooltip--top" href="https://zgjoget.gitee.io/2022/02/21th_feb_algorithm_training/" data-tooltip="21th_Feb_algorithm_training" aria-label="NEXT: 21th_Feb_algorithm_training">
          
              <i class="fa fa-angle-left"></i>
              <span class="hide-xs hide-sm text-small icon-ml">NEXT</span>
            </a>
        </li>
        <li class="post-action">
          
            <a class="post-action-btn btn btn--default tooltip--top" href="https://zgjoget.gitee.io/2022/02/activity/" data-tooltip="Activity" aria-label="PREVIOUS: Activity">
          
              <span class="hide-xs hide-sm text-small icon-mr">PREVIOUS</span>
              <i class="fa fa-angle-right"></i>
            </a>
        </li>
      
    </ul>
  </nav>
<ul class="post-actions post-action-share" >
  
    <li class="post-action hide-lg hide-md hide-sm">
      <a class="post-action-btn btn btn--default btn-open-shareoptions" href="#btn-open-shareoptions" aria-label="Share this post">
        <i class="fa fa-share-alt" aria-hidden="true"></i>
      </a>
    </li>
    
      <li class="post-action hide-xs">
        <a class="post-action-btn btn btn--default" target="new" href="https://www.facebook.com/sharer/sharer.php?u=https://zgjoget.gitee.io/2022/02/double_week_contest/" title="Share on Facebook" aria-label="Share on Facebook">
          <i class="fab fa-facebook-square" aria-hidden="true"></i>
        </a>
      </li>
    
      <li class="post-action hide-xs">
        <a class="post-action-btn btn btn--default" target="new" href="https://twitter.com/intent/tweet?text=https://zgjoget.gitee.io/2022/02/double_week_contest/" title="Share on Twitter" aria-label="Share on Twitter">
          <i class="fab fa-twitter" aria-hidden="true"></i>
        </a>
      </li>
    
      <li class="post-action hide-xs">
        <a class="post-action-btn btn btn--default" target="new" href="https://www.linkedin.com/sharing/share-offsite/?url=https://zgjoget.gitee.io/2022/02/double_week_contest/" title="Share on Linkedin" aria-label="Share on Linkedin">
          <i class="fab fa-linkedin" aria-hidden="true"></i>
        </a>
      </li>
    
  
  
    <li class="post-action">
      <a class="post-action-btn btn btn--default" href="#disqus_thread" aria-label="Leave a comment">
        <i class="far fa-comment"></i>
      </a>
    </li>
  
  <li class="post-action">
    
      <a class="post-action-btn btn btn--default" href="#top" aria-label="Back to top">
      <i class="fa fa-arrow-up" aria-hidden="true"></i>
    
    </a>
  </li>
</ul>
</div>


            
  
    <div id="disqus_thread">
      <noscript>Please enable JavaScript to view the comments powered by Disqus.</noscript>
    </div>
    <script type="text/javascript">
      var disqus_config = function() {
        this.page.url = 'https:\/\/zgjoget.gitee.io\/2022\/02\/double_week_contest\/';
        
          this.page.identifier = '\/2022\/02\/double_week_contest\/'
        
      };
      (function() {
        
        
        if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
          document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.';
          return;
        }
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        var disqus_shortname = 'zgjoget9-github-io';
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
      })();
    </script>
  


          </div>
        </article>
        <footer id="footer" class="main-content-wrap">
  <span class="copyrights">
    &copy; 2022 Zhang Gaojie. All Rights Reserved
  </span>
</footer>

      </div>
      <div id="bottom-bar" class="post-bottom-bar" data-behavior="4">
        
<div class="post-actions-wrap">
  <nav >
    <ul class="post-actions post-action-nav">
      
        <li class="post-action">
          
            <a class="post-action-btn btn btn--default tooltip--top" href="https://zgjoget.gitee.io/2022/02/21th_feb_algorithm_training/" data-tooltip="21th_Feb_algorithm_training" aria-label="NEXT: 21th_Feb_algorithm_training">
          
              <i class="fa fa-angle-left"></i>
              <span class="hide-xs hide-sm text-small icon-ml">NEXT</span>
            </a>
        </li>
        <li class="post-action">
          
            <a class="post-action-btn btn btn--default tooltip--top" href="https://zgjoget.gitee.io/2022/02/activity/" data-tooltip="Activity" aria-label="PREVIOUS: Activity">
          
              <span class="hide-xs hide-sm text-small icon-mr">PREVIOUS</span>
              <i class="fa fa-angle-right"></i>
            </a>
        </li>
      
    </ul>
  </nav>
<ul class="post-actions post-action-share" >
  
    <li class="post-action hide-lg hide-md hide-sm">
      <a class="post-action-btn btn btn--default btn-open-shareoptions" href="#btn-open-shareoptions" aria-label="Share this post">
        <i class="fa fa-share-alt" aria-hidden="true"></i>
      </a>
    </li>
    
      <li class="post-action hide-xs">
        <a class="post-action-btn btn btn--default" target="new" href="https://www.facebook.com/sharer/sharer.php?u=https://zgjoget.gitee.io/2022/02/double_week_contest/" title="Share on Facebook" aria-label="Share on Facebook">
          <i class="fab fa-facebook-square" aria-hidden="true"></i>
        </a>
      </li>
    
      <li class="post-action hide-xs">
        <a class="post-action-btn btn btn--default" target="new" href="https://twitter.com/intent/tweet?text=https://zgjoget.gitee.io/2022/02/double_week_contest/" title="Share on Twitter" aria-label="Share on Twitter">
          <i class="fab fa-twitter" aria-hidden="true"></i>
        </a>
      </li>
    
      <li class="post-action hide-xs">
        <a class="post-action-btn btn btn--default" target="new" href="https://www.linkedin.com/sharing/share-offsite/?url=https://zgjoget.gitee.io/2022/02/double_week_contest/" title="Share on Linkedin" aria-label="Share on Linkedin">
          <i class="fab fa-linkedin" aria-hidden="true"></i>
        </a>
      </li>
    
  
  
    <li class="post-action">
      <a class="post-action-btn btn btn--default" href="#disqus_thread" aria-label="Leave a comment">
        <i class="far fa-comment"></i>
      </a>
    </li>
  
  <li class="post-action">
    
      <a class="post-action-btn btn btn--default" href="#top" aria-label="Back to top">
      <i class="fa fa-arrow-up" aria-hidden="true"></i>
    
    </a>
  </li>
</ul>
</div>


      </div>
      
<div id="share-options-bar" class="share-options-bar" data-behavior="4">
  <i id="btn-close-shareoptions" class="fa fa-times"></i>
  <ul class="share-options">
    
      <li class="share-option">
        <a class="share-option-btn" target="new" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fzgjoget.gitee.io%2F2022%2F02%2Fdouble_week_contest%2F" aria-label="Share on Facebook">
          <i class="fab fa-facebook-square" aria-hidden="true"></i><span>Share on Facebook</span>
        </a>
      </li>
    
      <li class="share-option">
        <a class="share-option-btn" target="new" href="https://twitter.com/intent/tweet?text=https%3A%2F%2Fzgjoget.gitee.io%2F2022%2F02%2Fdouble_week_contest%2F" aria-label="Share on Twitter">
          <i class="fab fa-twitter" aria-hidden="true"></i><span>Share on Twitter</span>
        </a>
      </li>
    
      <li class="share-option">
        <a class="share-option-btn" target="new" href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fzgjoget.gitee.io%2F2022%2F02%2Fdouble_week_contest%2F" aria-label="Share on Linkedin">
          <i class="fab fa-linkedin" aria-hidden="true"></i><span>Share on Linkedin</span>
        </a>
      </li>
    
  </ul>
</div>
<div id="share-options-mask" class="share-options-mask"></div>


    </div>
    
    <div id="about">
  <div id="about-card">
    <div id="about-btn-close">
      <i class="fa fa-times"></i>
    </div>
    
      <img id="about-card-picture" src="https://zgjoget.gitee.io/img/avatar.jpg" alt="Author&#39;s picture" />
    
    <h4 id="about-card-name">Zhang Gaojie</h4>
    
      <div id="about-card-bio">A Computer-science and Cyber-security novice</div>
    
    
      <div id="about-card-job">
        <i class="fa fa-briefcase"></i>
        <br/>
        Huazhong University of Science and Technology
      </div>
    
    
      <div id="about-card-location">
        <i class="fa fa-map-marker-alt"></i>
        <br/>
        Wuhan, China
      </div>
    
  </div>
</div>

    

    
  
    
      <div id="cover" style="background-image:url('https://zgjoget.gitee.io/images/cover.jpg');"></div>
    
  


    
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/highlight.min.js" integrity="sha512-z+/WWfyD5tccCukM4VvONpEtLmbAm5LDu7eKiyMQJ9m7OfPEDL7gENyDRL3Yfe8XAuGsS2fS4xSMnl6d30kqGQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js" integrity="sha512-uURl+ZXMBrF4AwGaWmEetzrd+J5/8NRkWAvJx5sbPSSuOb0bZLqf+tOzniObO00BjHa/dD7gub9oCGMLPQHtQA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>


<script src="https://zgjoget.gitee.io/js/script-yqzy9wdlzix4lbbwdnzvwx3egsne77earqmn73v9uno8aupuph8wfguccut.min.js"></script>


  
    <script async crossorigin="anonymous" defer integrity="sha512-gE8KAQyFIzV1C9+GZ8TKJHZS2s+n7EjNtC+IMRn1l5+WYJTHOODUM6JSjZhFhqXmc7bG8Av6XXpckA4tYhflnw==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/apache.min.js"></script>
  

  
    <script async crossorigin="anonymous" defer integrity="sha512-EWROca+bote+7Oaaar1F6y74iZj1r1F9rm/ly7o+/FwJopbBaWtsFDmaKoZDd3QiGU2pGacBirHJNivmGLYrow==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/go.min.js"></script>
  

  
    <script async crossorigin="anonymous" defer integrity="sha512-GDVzAn0wpx1yVtQsRWmFc6PhJiLBPdUic+h4GWgljBh904O3JU10fk9EKNpVyIoPqkFn54rgL2QBG4BmUTMpiQ==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/http.min.js"></script>
  

  
    <script async crossorigin="anonymous" defer integrity="sha512-UgZlma8NzkrDb/NWgmLIcTrH7i/CSnLLDRFqCSNF5NGPpjKmzyM25qcoXGOup8+cDakKyaiTDd7N4dyH4YT+IA==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/less.min.js"></script>
  

  
    <script async crossorigin="anonymous" defer integrity="sha512-lot9koe73sfXIrUvIPM/UEhuMciN56RPyBdOyZgfO53P2lkWyyXN7J+njcxIIBRV+nVDQeiWtiXg+bLAJZDTfg==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/nginx.min.js"></script>
  

  
    <script async crossorigin="anonymous" defer integrity="sha512-Zd3e7XxHP00TD0Imr0PIfeM0fl0v95kMWuhyAS3Wn1UTSXTkz0OhtRgBAr4JlmADRgiXr4x7lpeUdqaGN8xIog==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/puppet.min.js"></script>
  

  
    <script async crossorigin="anonymous" defer integrity="sha512-qtqDO052iXMSP+5d/aE/jMtL9vIIGvONgTJziC2K/ZIB1yEGa55WVxGE9/08rSQ62EoDifS9SWVGZ7ihSLhzMA==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/scss.min.js"></script>
  

  
    <script async crossorigin="anonymous" defer integrity="sha512-1NmkjnEDnwwwcu28KoQF8vs3oaPFokQHbmbtwGhFfeDsQZtVFI8zW2aE9O8yMYdpdyKV/5blE4pSWw4Z/Sv97w==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/stylus.min.js"></script>
  

  
    <script async crossorigin="anonymous" defer integrity="sha512-B2wSfruPjr8EJL6IIzQr1eAuDwrsfIfccNf/LCEdxELCgC/S/ZMt/Uvk80aD79m7IqOqW+Sw8nbkvha20yZpzg==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/swift.min.js"></script>
  

  
    <script async crossorigin="anonymous" defer integrity="sha512-28oDiQZGKUVN6wQ7PSLPNipOcmkCALXKwOi7bnkyFf8QiMZQxG9EQoy/iiNx6Zxj2cG2SbVa4dXKigQhu7GiFw==" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.1.0/languages/yaml.min.js"></script>
  


<script>
$(document).ready(function() {
  hljs.configure({ classPrefix: '', useBR: false });
  $('pre.code-highlight > code, pre > code').each(function(i, block) {
    if (!$(this).hasClass('codeblock')) {
      $(this).addClass('codeblock');
    }
    hljs.highlightBlock(block);
  });
});
</script>




    
  </body>
</html>

